home *** CD-ROM | disk | FTP | other *** search
/ Mac Easy 2010 May / Mac Life Ubuntu.iso / casper / filesystem.squashfs / usr / src / linux-headers-2.6.28-15 / include / linux / mfd / wm8350 / rtc.h < prev    next >
Encoding:
C/C++ Source or Header  |  2008-12-24  |  10.6 KB  |  269 lines

  1. /*
  2.  * rtc.h  --  RTC driver for Wolfson WM8350 PMIC
  3.  *
  4.  * Copyright 2007 Wolfson Microelectronics PLC
  5.  *
  6.  *  This program is free software; you can redistribute  it and/or modify it
  7.  *  under  the terms of  the GNU General  Public License as published by the
  8.  *  Free Software Foundation;  either version 2 of the  License, or (at your
  9.  *  option) any later version.
  10.  */
  11.  
  12. #ifndef __LINUX_MFD_WM8350_RTC_H
  13. #define __LINUX_MFD_WM8350_RTC_H
  14.  
  15. #include <linux/platform_device.h>
  16.  
  17. /*
  18.  * Register values.
  19.  */
  20. #define WM8350_RTC_SECONDS_MINUTES              0x10
  21. #define WM8350_RTC_HOURS_DAY                    0x11
  22. #define WM8350_RTC_DATE_MONTH                   0x12
  23. #define WM8350_RTC_YEAR                         0x13
  24. #define WM8350_ALARM_SECONDS_MINUTES            0x14
  25. #define WM8350_ALARM_HOURS_DAY                  0x15
  26. #define WM8350_ALARM_DATE_MONTH                 0x16
  27. #define WM8350_RTC_TIME_CONTROL                 0x17
  28.  
  29. /*
  30.  * R16 (0x10) - RTC Seconds/Minutes
  31.  */
  32. #define WM8350_RTC_MINS_MASK                    0x7F00
  33. #define WM8350_RTC_MINS_SHIFT                        8
  34. #define WM8350_RTC_SECS_MASK                    0x007F
  35. #define WM8350_RTC_SECS_SHIFT                        0
  36.  
  37. /*
  38.  * R17 (0x11) - RTC Hours/Day
  39.  */
  40. #define WM8350_RTC_DAY_MASK                     0x0700
  41. #define WM8350_RTC_DAY_SHIFT                         8
  42. #define WM8350_RTC_HPM_MASK                     0x0020
  43. #define WM8350_RTC_HPM_SHIFT                         5
  44. #define WM8350_RTC_HRS_MASK                     0x001F
  45. #define WM8350_RTC_HRS_SHIFT                         0
  46.  
  47. /* Bit values for R21 (0x15) */
  48. #define WM8350_RTC_DAY_SUN                           1
  49. #define WM8350_RTC_DAY_MON                           2
  50. #define WM8350_RTC_DAY_TUE                           3
  51. #define WM8350_RTC_DAY_WED                           4
  52. #define WM8350_RTC_DAY_THU                           5
  53. #define WM8350_RTC_DAY_FRI                           6
  54. #define WM8350_RTC_DAY_SAT                           7
  55.  
  56. #define WM8350_RTC_HPM_AM                            0
  57. #define WM8350_RTC_HPM_PM                            1
  58.  
  59. /*
  60.  * R18 (0x12) - RTC Date/Month
  61.  */
  62. #define WM8350_RTC_MTH_MASK                     0x1F00
  63. #define WM8350_RTC_MTH_SHIFT                         8
  64. #define WM8350_RTC_DATE_MASK                    0x003F
  65. #define WM8350_RTC_DATE_SHIFT                        0
  66.  
  67. /* Bit values for R22 (0x16) */
  68. #define WM8350_RTC_MTH_JAN                           1
  69. #define WM8350_RTC_MTH_FEB                           2
  70. #define WM8350_RTC_MTH_MAR                           3
  71. #define WM8350_RTC_MTH_APR                           4
  72. #define WM8350_RTC_MTH_MAY                           5
  73. #define WM8350_RTC_MTH_JUN                           6
  74. #define WM8350_RTC_MTH_JUL                           7
  75. #define WM8350_RTC_MTH_AUG                           8
  76. #define WM8350_RTC_MTH_SEP                           9
  77. #define WM8350_RTC_MTH_OCT                          10
  78. #define WM8350_RTC_MTH_NOV                          11
  79. #define WM8350_RTC_MTH_DEC                          12
  80. #define WM8350_RTC_MTH_JAN_BCD                    0x01
  81. #define WM8350_RTC_MTH_FEB_BCD                    0x02
  82. #define WM8350_RTC_MTH_MAR_BCD                    0x03
  83. #define WM8350_RTC_MTH_APR_BCD                    0x04
  84. #define WM8350_RTC_MTH_MAY_BCD                    0x05
  85. #define WM8350_RTC_MTH_JUN_BCD                    0x06
  86. #define WM8350_RTC_MTH_JUL_BCD                    0x07
  87. #define WM8350_RTC_MTH_AUG_BCD                    0x08
  88. #define WM8350_RTC_MTH_SEP_BCD                    0x09
  89. #define WM8350_RTC_MTH_OCT_BCD                    0x10
  90. #define WM8350_RTC_MTH_NOV_BCD                    0x11
  91. #define WM8350_RTC_MTH_DEC_BCD                    0x12
  92.  
  93. /*
  94.  * R19 (0x13) - RTC Year
  95.  */
  96. #define WM8350_RTC_YHUNDREDS_MASK               0x3F00
  97. #define WM8350_RTC_YHUNDREDS_SHIFT                   8
  98. #define WM8350_RTC_YUNITS_MASK                  0x00FF
  99. #define WM8350_RTC_YUNITS_SHIFT                      0
  100.  
  101. /*
  102.  * R20 (0x14) - Alarm Seconds/Minutes
  103.  */
  104. #define WM8350_RTC_ALMMINS_MASK                 0x7F00
  105. #define WM8350_RTC_ALMMINS_SHIFT                     8
  106. #define WM8350_RTC_ALMSECS_MASK                 0x007F
  107. #define WM8350_RTC_ALMSECS_SHIFT                     0
  108.  
  109. /* Bit values for R20 (0x14) */
  110. #define WM8350_RTC_ALMMINS_DONT_CARE                -1
  111. #define WM8350_RTC_ALMSECS_DONT_CARE                -1
  112.  
  113. /*
  114.  * R21 (0x15) - Alarm Hours/Day
  115.  */
  116. #define WM8350_RTC_ALMDAY_MASK                  0x0F00
  117. #define WM8350_RTC_ALMDAY_SHIFT                      8
  118. #define WM8350_RTC_ALMHPM_MASK                  0x0020
  119. #define WM8350_RTC_ALMHPM_SHIFT                      5
  120. #define WM8350_RTC_ALMHRS_MASK                  0x001F
  121. #define WM8350_RTC_ALMHRS_SHIFT                      0
  122.  
  123. /* Bit values for R21 (0x15) */
  124. #define WM8350_RTC_ALMDAY_DONT_CARE                 -1
  125. #define WM8350_RTC_ALMDAY_SUN                        1
  126. #define WM8350_RTC_ALMDAY_MON                        2
  127. #define WM8350_RTC_ALMDAY_TUE                        3
  128. #define WM8350_RTC_ALMDAY_WED                        4
  129. #define WM8350_RTC_ALMDAY_THU                        5
  130. #define WM8350_RTC_ALMDAY_FRI                        6
  131. #define WM8350_RTC_ALMDAY_SAT                        7
  132.  
  133. #define WM8350_RTC_ALMHPM_AM                         0
  134. #define WM8350_RTC_ALMHPM_PM                         1
  135.  
  136. #define WM8350_RTC_ALMHRS_DONT_CARE                 -1
  137.  
  138. /*
  139.  * R22 (0x16) - Alarm Date/Month
  140.  */
  141. #define WM8350_RTC_ALMMTH_MASK                  0x1F00
  142. #define WM8350_RTC_ALMMTH_SHIFT                      8
  143. #define WM8350_RTC_ALMDATE_MASK                 0x003F
  144. #define WM8350_RTC_ALMDATE_SHIFT                     0
  145.  
  146. /* Bit values for R22 (0x16) */
  147. #define WM8350_RTC_ALMDATE_DONT_CARE                -1
  148.  
  149. #define WM8350_RTC_ALMMTH_DONT_CARE                 -1
  150. #define WM8350_RTC_ALMMTH_JAN                        1
  151. #define WM8350_RTC_ALMMTH_FEB                        2
  152. #define WM8350_RTC_ALMMTH_MAR                        3
  153. #define WM8350_RTC_ALMMTH_APR                        4
  154. #define WM8350_RTC_ALMMTH_MAY                        5
  155. #define WM8350_RTC_ALMMTH_JUN                        6
  156. #define WM8350_RTC_ALMMTH_JUL                        7
  157. #define WM8350_RTC_ALMMTH_AUG                        8
  158. #define WM8350_RTC_ALMMTH_SEP                        9
  159. #define WM8350_RTC_ALMMTH_OCT                       10
  160. #define WM8350_RTC_ALMMTH_NOV                       11
  161. #define WM8350_RTC_ALMMTH_DEC                       12
  162. #define WM8350_RTC_ALMMTH_JAN_BCD                 0x01
  163. #define WM8350_RTC_ALMMTH_FEB_BCD                 0x02
  164. #define WM8350_RTC_ALMMTH_MAR_BCD                 0x03
  165. #define WM8350_RTC_ALMMTH_APR_BCD                 0x04
  166. #define WM8350_RTC_ALMMTH_MAY_BCD                 0x05
  167. #define WM8350_RTC_ALMMTH_JUN_BCD                 0x06
  168. #define WM8350_RTC_ALMMTH_JUL_BCD                 0x07
  169. #define WM8350_RTC_ALMMTH_AUG_BCD                 0x08
  170. #define WM8350_RTC_ALMMTH_SEP_BCD                 0x09
  171. #define WM8350_RTC_ALMMTH_OCT_BCD                 0x10
  172. #define WM8350_RTC_ALMMTH_NOV_BCD                 0x11
  173. #define WM8350_RTC_ALMMTH_DEC_BCD                 0x12
  174.  
  175. /*
  176.  * R23 (0x17) - RTC Time Control
  177.  */
  178. #define WM8350_RTC_BCD                          0x8000
  179. #define WM8350_RTC_BCD_MASK                     0x8000
  180. #define WM8350_RTC_BCD_SHIFT                        15
  181. #define WM8350_RTC_12HR                         0x4000
  182. #define WM8350_RTC_12HR_MASK                    0x4000
  183. #define WM8350_RTC_12HR_SHIFT                       14
  184. #define WM8350_RTC_DST                          0x2000
  185. #define WM8350_RTC_DST_MASK                     0x2000
  186. #define WM8350_RTC_DST_SHIFT                        13
  187. #define WM8350_RTC_SET                          0x0800
  188. #define WM8350_RTC_SET_MASK                     0x0800
  189. #define WM8350_RTC_SET_SHIFT                        11
  190. #define WM8350_RTC_STS                          0x0400
  191. #define WM8350_RTC_STS_MASK                     0x0400
  192. #define WM8350_RTC_STS_SHIFT                        10
  193. #define WM8350_RTC_ALMSET                       0x0200
  194. #define WM8350_RTC_ALMSET_MASK                  0x0200
  195. #define WM8350_RTC_ALMSET_SHIFT                      9
  196. #define WM8350_RTC_ALMSTS                       0x0100
  197. #define WM8350_RTC_ALMSTS_MASK                  0x0100
  198. #define WM8350_RTC_ALMSTS_SHIFT                      8
  199. #define WM8350_RTC_PINT                         0x0070
  200. #define WM8350_RTC_PINT_MASK                    0x0070
  201. #define WM8350_RTC_PINT_SHIFT                        4
  202. #define WM8350_RTC_DSW                          0x000F
  203. #define WM8350_RTC_DSW_MASK                     0x000F
  204. #define WM8350_RTC_DSW_SHIFT                         0
  205.  
  206. /* Bit values for R23 (0x17) */
  207. #define WM8350_RTC_BCD_BINARY                        0
  208. #define WM8350_RTC_BCD_BCD                           1
  209.  
  210. #define WM8350_RTC_12HR_24HR                         0
  211. #define WM8350_RTC_12HR_12HR                         1
  212.  
  213. #define WM8350_RTC_DST_DISABLED                      0
  214. #define WM8350_RTC_DST_ENABLED                       1
  215.  
  216. #define WM8350_RTC_SET_RUN                           0
  217. #define WM8350_RTC_SET_SET                           1
  218.  
  219. #define WM8350_RTC_STS_RUNNING                       0
  220. #define WM8350_RTC_STS_STOPPED                       1
  221.  
  222. #define WM8350_RTC_ALMSET_RUN                        0
  223. #define WM8350_RTC_ALMSET_SET                        1
  224.  
  225. #define WM8350_RTC_ALMSTS_RUNNING                    0
  226. #define WM8350_RTC_ALMSTS_STOPPED                    1
  227.  
  228. #define WM8350_RTC_PINT_DISABLED                     0
  229. #define WM8350_RTC_PINT_SECS                         1
  230. #define WM8350_RTC_PINT_MINS                         2
  231. #define WM8350_RTC_PINT_HRS                          3
  232. #define WM8350_RTC_PINT_DAYS                         4
  233. #define WM8350_RTC_PINT_MTHS                         5
  234.  
  235. #define WM8350_RTC_DSW_DISABLED                      0
  236. #define WM8350_RTC_DSW_1HZ                           1
  237. #define WM8350_RTC_DSW_2HZ                           2
  238. #define WM8350_RTC_DSW_4HZ                           3
  239. #define WM8350_RTC_DSW_8HZ                           4
  240. #define WM8350_RTC_DSW_16HZ                          5
  241. #define WM8350_RTC_DSW_32HZ                          6
  242. #define WM8350_RTC_DSW_64HZ                          7
  243. #define WM8350_RTC_DSW_128HZ                         8
  244. #define WM8350_RTC_DSW_256HZ                         9
  245. #define WM8350_RTC_DSW_512HZ                        10
  246. #define WM8350_RTC_DSW_1024HZ                       11
  247.  
  248. /*
  249.  * R218 (0xDA) - RTC Tick Control
  250.  */
  251. #define WM8350_RTC_TICKSTS                      0x4000
  252. #define WM8350_RTC_CLKSRC                       0x2000
  253. #define WM8350_RTC_TRIM_MASK                    0x03FF
  254.  
  255. /*
  256.  * RTC Interrupts.
  257.  */
  258. #define WM8350_IRQ_RTC_PER            7
  259. #define WM8350_IRQ_RTC_SEC            8
  260. #define WM8350_IRQ_RTC_ALM            9
  261.  
  262. struct wm8350_rtc {
  263.     struct platform_device *pdev;
  264.     struct rtc_device *rtc;
  265.     int alarm_enabled;      /* used over suspend/resume */
  266. };
  267.  
  268. #endif
  269.